package org.jypj.zgcsx.common.utils;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class HttpUtil {

    private static final Log logger = LogFactory.getLog(HttpUtil.class);

    /**
     * 处理get请求.
     *
     * @param url 请求路径
     * @return json
     */
    public static String get(String url) {
        //实例化httpclient  
        CloseableHttpClient httpclient = HttpClients.createDefault();
        //实例化get方法  
        HttpGet httpget = new HttpGet(url);
        //请求结果  
        CloseableHttpResponse response = null;
        String content = "";
        try {
            //执行get方法  
            response = httpclient.execute(httpget);
            if (response.getStatusLine().getStatusCode() == 200) {
                content = EntityUtils.toString(response.getEntity(), "utf-8");
                logger.debug(content);
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return content;
    }

    /**
     * 处理post请求.
     *
     * @param url    请求路径
     * @param params 参数
     * @return json
     */
    public static String post(String url, Map<String, String> params) {
        //实例化httpClient  
        CloseableHttpClient httpclient = HttpClients.createDefault();
        //实例化post方法  
        HttpPost httpPost = new HttpPost(url);
        //处理参数  
        List<NameValuePair> nvps = new ArrayList<NameValuePair>();
        Set<String> keySet = params.keySet();
        for (String key : keySet) {
            nvps.add(new BasicNameValuePair(key, params.get(key)));
        }
        //结果  
        CloseableHttpResponse response = null;
        String content = "";
        try {
            //提交的参数  
            UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(nvps, "UTF-8");
            //将参数给post方法  
            httpPost.setEntity(uefEntity);
            //执行post方法  
            response = httpclient.execute(httpPost);
            if (response.getStatusLine().getStatusCode() == 200) {
                content = EntityUtils.toString(response.getEntity(), "utf-8");
                logger.debug(content);
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return content;
    }

    public static JSONObject getJson(String url) {
        String result = get(url);
        JSONObject jsonObject = JSONObject.parseObject(result);
        return jsonObject;
    }


}  